Customnormalize

对输入字符串进行一系列自定义的文本标准化处理。

该算子按顺序执行以下操作: 1. 将所有大写字母转换为小写字母。 2. 去除字符串首尾的空白字符 (space, \t, \n, \v, \f, \r)。 3. 删除字符串中预定义的一组标点符号 (例如 .*()\")。 4. 标准化缩写词,例如,将 we 're 转换为 we're。 5. 展开常见的英文缩写词 (例如, n't -> `` not``, 'll -> `` will``, i'm -> i am 等)。 6. 标准化问号和感叹号,例如合并连续的符号 (!!! -> !) 并在符号和单词之间添加空格 (Hello? -> Hello ?)。 7. 去除字符串首尾预定义的另一组字符 (例如 [\\s,:;\\-&'\"]+)。 8. 再次去除字符串首尾的空白字符。 9. 如果处理后的字符串长度超过300个字符,则将其截断为300个字符。 10. 在字符串首部添加前缀 <S> ``,尾部添加后缀 `` <E>

输入:
  • str - 输入字符串的地址。

  • str_len - 输入字符串的长度。

  • tmp_str - 用于中间计算的临时缓冲区的地址,其大小应足以容纳处理过程中的字符串。

  • params - 一个 long long 类型的数组,其中每个元素是指向标准化操作所需的配置字符串或参数的指针。

  • core_mask - 核掩码 (仅共享存储版本需要)。

输出:
  • result - 存储标准化后字符串的输出缓冲区的地址。

  • result_len - 指向一个 int 变量的指针,用于存储结果字符串的长度。

支持平台:

FT78NE MT7004

备注

  • 该算子不区分数据类型

共享存储版本:

void customnormalize_s(char *str, int str_len, char *result, int *result_len, char *tmp_str, long long *params, int core_mask)

C调用示例:

 1#include <stdio.h>
 2#include <string.h>
 3#include "customnormalize.h"
 4
 5int main() {
 6    char *str = (char *)0xA0000000;         // str in DDR
 7    char *result = (char *)0xB0000000;      // result in DDR
 8    char *tmp_str = (char *)0xC0000000;     // tmp_str in DDR
 9    int str_len = 50; // 假设长度
10    int result_len = 0;
11    long long params[20]; // 假设参数已填充
12    int core_mask = 0xff;
13
14    customnormalize_s(str, str_len, result, &result_len, tmp_str, params, core_mask);
15
16    return 0;
17}

私有存储版本:

void customnormalize_p(char *str, int str_len, char *result, int *result_len, char *tmp_str, long long *params)

C调用示例:

 1#include <stdio.h>
 2#include <string.h>
 3#include "customnormalize.h"
 4
 5int main() {
 6    char *str = (char *)0x10000000;         // str in L2
 7    char *result = (char *)0x10001000;      // result in L2
 8    char *tmp_str = (char *)0x10002000;     // tmp_str in L2
 9    int str_len = 50; // 假设长度
10    int result_len = 0;
11    long long params[20]; // 假设参数已填充
12
13    customnormalize_p(str, str_len, result, &result_len, tmp_str, params);
14
15    return 0;
16}